package edu.object_oriented.poly;

public class Polymorphism {

    public static void main(String[] args) {
        //多态   父类类型的对象可以有多种形态   自己、子类的
        A a = new A();
        a.say();
        //向上转型    此时父类类型的对象再去使用重写方法时，使用的是子类的
        B b = new B();
        a = b;
        a.say();
//        此时a只能调用和b共有的，不能调用b独有的
//        a.methodB();
//        a.msg = "";
        a = new C();
        a.say();
        //多态的运用  参数为引用数据类型时，如果此类型有多个子类
        TestPoly poly = new TestPoly();
        poly.test(new A());
        poly.test(new B());
        poly.test(new C());

    }

}

class A{
    void say(){
        System.out.println("aaaaaaaaaaa");
    }
}

class B extends A{
    @Override
    void say() {
        System.out.println("bbbbbbb");
    }
    String msg;
    void methodB(){

    }

}
class C extends A{
    @Override
    void say() {
        System.out.println("cccccc");
    }
}
class TestPoly{

    void test(A a){
        a.say();
    }

}


